class DBPost{
  constructor(postId){  //传入参数postId，文章或图书编号
    this.storageKeyName = 'postList',   //缓存的名称
    this.postId = postId
  }
  
  //得到文章全部消息
  getAllPostData(){
    var myres = wx.getStorageSync(this.storageKeyName);
    if(!myres){
      var that = this
      //缓存不存在，用getall云函数获取
      wx.cloud.callFunction({
        name: 'getall',
        success: function (res) {
          var myres = res.result.data
          that.execSetStorageSync(myres)
        },
        fail: console.log('**22')
      })

      // res = require('../data/data.js').postList;//*******************此处需修改
      //更新缓存
      // this.execSetStorageSync(myres);
    }
    //缓存存在，返回缓存值
    return myres;
  }

  //本地缓存，保存/更新
  execSetStorageSync(data){
    wx.setStorageSync(this.storageKeyName,data);
  }

  //获取指定id号的文章数据
  getPostItemById(){
    var postData = this.getAllPostData()  //获取所有文章数据
    var len = postData.length
    for (var i=0;i<len;i++){
      if(postData[i]._id == this.postId){//按照postId在所有文章中找出当前文章
      console.log('已找到对应文章')
        return{
          index:i,              //当前文章在缓存数据库数组中序号
          data:postData[i]      //当前文章相关的数据
        }
      }
    }
  }

  //获取collectionStatus为True的文章数据
  getPostsByStatus() {
    var postData = this.getAllPostData()  //获取所有文章数据
    var len = postData.length
    var allPostData = [];
    var t = 0;
    for (var i = 0; i < len; i++) {
      if (postData[i].collectionStatus == true) {//按照collectionStatus在所有文章中找出当前文章
        allPostData[t] = postData[i]
        t++
      } 
    }
    // console.log('****01', allPostData)
    return {
          data: allPostData      //当前文章相关的数据
        }
  }

  //收藏文章
  collect(){
    return this.updatePostData('collect')
  }
  //核心方法
  updatePostData(category){ 
    var itemData = this.getPostItemById()  //获取当前文章信息
    console.log(itemData)
    var postData = itemData.data           //获取当前文章信息中的数据
    var allPostData = this.getAllPostData()//获取所有文章信息
    switch(category){
      case 'collect':
        if(!postData.collectionStatus){
          //未收藏
          postData.collectionNum++
          postData.collectionStatus = true
        }else{
          postData.collectionNum--
          postData.collectionStatus = false
        }
        break;
      default:
        break;
    }
    //更新缓存数据库
    allPostData[itemData.index] = postData  //将更新的当前文章信息postData存入所有文章是数据集allPostData
    this.execSetStorageSync(allPostData)
    //返回更新的当前文章信息
    return postData
  }

}

export{DBPost}